package com.itstu.gulimall.order;

import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

/**
 * 使用RabbitMQ
 * 1. 使用amqp场景
 * 2. 给容器中自动配置了rabbitTemplate,rabbitConnectionFactory,rabbitMessagingTemplate
 * 3. 给配置文件配置spring.rabbitmq 信息
 * 4. @EnableRabbit
 * 5. 监听消息，@RabbitListener（可单独使用，也可与@RabbitHandler组合使用）
 * 	  @RabbitListener： 类和方法上（监听哪些队列）
 * 	  @RabbitHandler: 标在方法上 (可以重载区分不同的消息)
 *
 *
 * seata控制分布式事务
 * 1） 每一个微服务创建自己的undolog表
 * 2） 安装事务协调器 https://github.com/seata/seata/releases
 * 3） 整合
 * 		1. 导入依赖
 * 		2. 解压并启动
 * 		3. 所有想要用分布式事务的微服务使用seata DataSourceProxy代理自己的数据源
 * 	    4. 每个微服务都必须导入
 * 	        registry.conf  与 file.conf
 * 	    5. 启动测试分布式事务
 * 	    6. 给分布式大事务的入口标注 @GlobalTransactional
 * 	    7. 给远程的小事务标注 @Transactional
 */


@EnableRabbit
@SpringBootApplication/*(exclude = {DataSourceAutoConfiguration.class})*/
@EnableDiscoveryClient
@EnableRedisHttpSession
@EnableFeignClients
public class GulimallOrderApplication {

	public static void main(String[] args) {
		SpringApplication.run(GulimallOrderApplication.class, args);
	}

}
